//
//  WmcNavigationRegisterKeys.swift
//  WmcMVVM-Demo
//
//  Created by 赵新 on 2021/11/25.
//

import UIKit

public extension WmcNavigatorManager {
    /// 所有页面的枚举
    /// 由于防止业务变动等原因，造成页面传参变化
    /// 从而导致维护难度加大，故不使用带参枚举
    enum Path: String, CaseIterable {
        /// 存储路由枚举信息的结构体
        struct Info {
            var ClassType: AnyClass
        }

        /// 首页
        case home
        /// 照片预览
        case photoPreview
        /// 拍照识别结果
        case recognitionResult
        /// 邀请好友
        case invitation
        /// 意见反馈
        case feedback
        /// 编辑水印
        case editWatermark
        /// 分享水印
        case shareWatermark
        /// 编辑品牌图
        case editbrand
        /// 品牌库
        case brandLibrary
        /// 图片裁剪
        case imageTailor
        /// 头像裁剪
        case avatarCropping
        /// 设置模块
        case cameraSetting
        /// 系统相册
        case systemAlbum
        /// 本地相册
        case localAlbum
        /// 个人云相册
        case personCloudAlbum
        /// 团队云相册
        case teamCloudAlbum
        /// 云相册-我的
        case cloudAlbumMine
        /// 照片编辑
        case editPhoto
        /// 图片浏览
        case imageBrowse
        /// 云相册-筛选照片
        case cloudScreenPhoto
        /// 选择水印
        case selectWatermark
        /// 备注
        case remark
        /// 选择地址
        case selectAddress
        /// 修改名字
        case editName
        /// 换绑手机号
        case editPhone
        /// 上传失败页面
        case uploadFailure
        /// 网页
        case web
        /// 分类相册的二级页面
        case classifyAlbumSecondLevel
        /// 全部照片页面
        case allPhoto
        /// 搜索照片结果
        case searchPhotoResult
        /// 视频播放页
        case videoPlayer
        /// 注销账号
        case cancellationAccount
        ///  注销账号反馈
        case cancellationFeedback
        /// 注销协议
        case cancellationPolicy
        /// 验证码 验证
        case cancellationValidation
        /// 注销确认
        case cancellationConfirm
        /// 我的团队
        case myTeam
        /// 邀请成员
        case inviewTeamMember
        /// qrcode 页面(团队邀请二维码页面)
        case teamInviteQRCodePage
        /// 手动添加
        case manualInviteTeamMember
        /// 团队相册成员详情
        case teamCloudMemberDetail
        /// 编辑团队成员资料
        case editTeamMemberInfo
        /// 编辑团队成员信息当中的其中一条（例如名字）
        case editTeamMemerSpecificItem
        /// 创建团队(相册)
        case createTeamAlbum
        /// 加入团队（相册）
        case joinTeamAblum
        /// 分类相册（团队成员分类）
        case teamClouldAlbumMemberCategory
        /// 分类相册（水印分类）
        case teamCloudAlbumWatermarkCategory
        /// 团队成员相册
        case teamMemberCloudAlbum
        /// 团队所有照片
        case teamAlbumAllPhotos
        /// 团队相册搜索
        case teamAlbumSearch
        /// 团队搜索结果页
        case teamSearchResult
        /// 通用h5页面
        case html5Page
        /// 分辨率
        case resolution
        /// 二维码验证
        case qrcodeVerify
        
        
        var info: Info {
            switch self {
            case .home: return .init(ClassType: WmcHomeVC.self)
            case .photoPreview: return .init(ClassType: WmcPhotoPreviewVC.self)
            case .recognitionResult: return .init(ClassType: WmcRecognitionResultVC.self)
            case .invitation: return .init(ClassType: WmcInvitationVC.self)
            case .feedback: return .init(ClassType: WmcFeedbackVC.self)
            case .editWatermark: return .init(ClassType: WmcEditWatermarkVC.self)
            case .shareWatermark: return .init(ClassType: WmcShareWatermarkVC.self)
            case .editbrand: return .init(ClassType: WmcEditBrandVC.self)
            case .brandLibrary: return .init(ClassType: WmcBrandLibraryVC.self)
            case .imageTailor: return .init(ClassType: WmcImageTailorVC.self)
            case .avatarCropping: return .init(ClassType: WmcAvatarCropVC.self)
            case .cameraSetting: return .init(ClassType: WmcCameraSettingVC.self)
            case .systemAlbum: return .init(ClassType: WmcSystemAlbumVC.self)
            case .localAlbum: return .init(ClassType: WmcLocalAlbumVC.self)
            case .personCloudAlbum: return .init(ClassType: WmcPersonCloudAlbumTabBarVC.self)
            case .teamCloudAlbum: return .init(ClassType: WmcTeamCloudAlbumTabBarVC.self)
            case .cloudAlbumMine: return .init(ClassType: WmcCloudMineVC.self)
            case .editPhoto: return .init(ClassType: WmcEditPhotoVC.self)
            case .imageBrowse: return .init(ClassType: WmcMediaBrowseVC.self)
            case .cloudScreenPhoto: return .init(ClassType: WmcCloudSearchPhotoVC.self)
            case .selectWatermark: return .init(ClassType: WmcSelectWatermarkVC.self)
            case .remark: return .init(ClassType: WmcRemarkVC.self)
            case .selectAddress: return .init(ClassType: WmcSelectAddressVC.self)
            case .editName: return .init(ClassType: WmcEditNameVC.self)
            case .editPhone: return .init(ClassType: WmcEditPhoneVC.self)
            case .uploadFailure: return .init(ClassType: WmcUploadFailureVC.self)
            case .web: return .init(ClassType: WmcWebVC.self)
            case .classifyAlbumSecondLevel: return .init(ClassType: WmcClassifyAlbumSecondLevelVC.self)
            case .allPhoto: return .init(ClassType: WmcClassifyAlbumDetailVC.self)
            case .searchPhotoResult: return .init(ClassType: WmcCloudAlbumSearchResultVC.self)
            case .videoPlayer: return .init(ClassType: WmcVideoPlayerVC.self)
            case .cancellationAccount: return .init(ClassType: WmcAccountCancellationVC.self)
            case .cancellationFeedback: return .init(ClassType: WmcCancellationFeedbackVC.self)
            case .cancellationPolicy: return .init(ClassType: WmcCancellationPolicyWebVC.self)
            case .cancellationValidation: return .init(ClassType: WmcCancellationValidationVC.self)
            case .cancellationConfirm: return .init(ClassType: WmcCancellationConfirmVC.self)
            case .myTeam: return .init(ClassType: WmvMyTeamVC.self)
            case .inviewTeamMember: return .init(ClassType: WmcTeamCloudInviteMemberVC.self)
            case .teamInviteQRCodePage: return .init(ClassType: WmcTeamMemberQRCodeInviteVC.self)
            case .manualInviteTeamMember: return .init(ClassType: WmcManualInviteTeamMemeberVC.self)
            case .teamCloudMemberDetail: return .init(ClassType: WmcTeamCloudMemberDetailVC.self)
            case .editTeamMemberInfo: return .init(ClassType: WmcEditTeamMemberInfoVC.self)
            case .editTeamMemerSpecificItem: return .init(ClassType: WmcEditTeamMemberSpecificItemVC.self)
            case .createTeamAlbum: return .init(ClassType: WmcCreateTeamVC.self)
            case .joinTeamAblum: return .init(ClassType: WmcJoinTeamVC.self)
            case .teamClouldAlbumMemberCategory: return .init(ClassType: WmcTeamMemberAlbumListVC.self)
            case .teamCloudAlbumWatermarkCategory: return .init(ClassType: WmcTeamWatermarkCategoriesVC.self)
            case .teamMemberCloudAlbum: return .init(ClassType: WmcTeamMemberAlbumVC.self)
            case .teamAlbumAllPhotos: return .init(ClassType: WmcTeamAlbumAllPhotosVC.self)
            case .teamAlbumSearch: return .init(ClassType: WmcTeamSearchVC.self)
            case .teamSearchResult: return .init(ClassType: WmcTeamSearchResultVC.self)
            case .html5Page: return .init(ClassType: WmcHtml5VC.self)
            case .resolution: return .init(ClassType: WmcResolutionVC.self)
            case .qrcodeVerify: return .init(ClassType: WmcQRCodeVerifyWebVC.self)
            }
        }
    }
}
